#include<iostream>
#include<stdio.h>
#include<string.h>

using namespace std;

// size_t my_strlen(char* s)
// {
//     size_t count;
//     while (*s!='\0')
//     {
//         count++;
//         s++;
//     }
//     return count;
// }

size_t my_strlen(char* s)
{
    
    char* start = s;
    while (*s!='\0')
    {
        s++;
    }
    return s-start;
}






int main()
{
    //const修饰指针的两种情况
    //const放*左边  int const * p/

    //意思为指针指向的内容，不能通过指针来改变，指针变量本身的值可以改
    //
    //const放在*的右边 int * const p
    //表示指针变量p本身不可被修改，指针中内容可修改
    //
    //const int * const p;
    //p本身地址不可修改，p中值也不可修改
    //
    //
    // const int num = 0;
    // int n = 100;
    // //int* p = &n;
    //  int * const p = &num;
    // *p = 20;
    // printf("%d",num);
    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
    int sz = sizeof(arr)/sizeof(arr[0]);
    int *p = &arr[0];
    for (int i = 0; i < sz; i++)
    {
        printf("%d ",*(p+i));
    }
    printf("\n");
    for (int j = 9; j >=0 ; j--)
    {
        printf("%d ",*(p+j)); 
    }
    printf("\n");
    for (int i = 0; i < sz; i++)
    {
        printf("%d ",*p);
        p++;
    }
    printf("\n");

    int arr2[10] = {0};
    printf("%d\n",&arr[9]-&arr[0]);
    //指针减指的值为元素个数;
    //运算前提：两个指针指向同一块空间
    char arrk[] ="abcdef";
    //数组名是数组首元素的地址

    size_t len = my_strlen(arrk);//arrk == &arrk[0]
    printf("%zd\n",len);



    return 0;
}